home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / lib / emacs / 19.22 / lisp / env.el < prev    next >
Lisp/Scheme  |  1993-06-11  |  2KB  |  59 lines

  1. ;;; env.el --- functions to manipulate environment variables.
  2.  
  3. ;;; Copyright Free Software Foundation 1991
  4.  
  5. ;; Maintainer: FSF
  6. ;; Keywords: processes, unix
  7.  
  8. ;;; This file is part of GNU Emacs.
  9.  
  10. ;;; GNU Emacs is free software; you can redistribute it and/or modify
  11. ;;; it under the terms of the GNU General Public License as published by
  12. ;;; the Free Software Foundation; either version 2, or (at your option)
  13. ;;; any later version.
  14.  
  15. ;;; GNU Emacs is distributed in the hope that it will be useful,
  16. ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18. ;;; GNU General Public License for more details.
  19.  
  20. ;;; You should have received a copy of the GNU General Public License
  21. ;;; along with GNU Emacs; see the file COPYING.  If not, write to
  22. ;;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  23.  
  24. ;;; Commentary:
  25.  
  26. ;; UNIX processes inherit a list of name-to-string associations from
  27. ;; their parents called their `environment'; these are commonly used
  28. ;; to control program options.  This package permits you to set
  29. ;; environment variables to be passed to any sub-process run under Emacs.
  30.  
  31. ;;; Code:
  32.  
  33. ;;;###autoload
  34. (defun setenv (variable &optional value)
  35.   "Set the value of the environment variable named VARIABLE to VALUE.
  36. VARIABLE should be a string.  VALUE is optional; if not provided or is
  37. `nil', the environment variable VARIABLE will be removed.  
  38. This function works by modifying `process-environment'."
  39.   (interactive "sSet environment variable: \nsSet %s to value: ")
  40.   (if (string-match "=" variable)
  41.       (error "Environment variable name `%s' contains `='" variable)
  42.     (let ((pattern (concat "\\`" (regexp-quote (concat variable "="))))
  43.       (case-fold-search nil)
  44.       (scan process-environment))
  45.       (while scan
  46.     (cond
  47.      ((string-match pattern (car scan))
  48.           (if (eq nil value)
  49.               (setq process-environment (delq (car scan) process-environment))
  50.             (setcar scan (concat variable "=" value)))
  51.       (setq scan nil))
  52.      ((null (setq scan (cdr scan)))
  53.       (setq process-environment
  54.         (cons (concat variable "=" value) process-environment))))))))
  55.  
  56. (provide 'env)
  57.  
  58. ;;; env.el ends here
  59.